package br.com.sms.action;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import br.com.sms.dominio.Cidade;
import br.com.sms.dominio.Destinatario;
import br.com.sms.dominio.Telefone;
import br.com.sms.dto.DestinatarioDTO;
import br.com.sms.enuns.SEXO;
import br.com.sms.enuns.TIPOPESSOA;
import br.com.sms.enuns.UF;
import br.com.sms.util.Mensagens;
import br.com.sms.util.Util;

public class DestinatarioAction extends Action{
	private static final long serialVersionUID = 1L;
	
	private Destinatario destinatario;
	private DestinatarioDTO dto;
	private Set<Destinatario> lista;
	private String selecionados;
	private List<TIPOPESSOA> tiposPessoa;
	private List<SEXO> sexos;
	private List<UF> ufs;
	
	public String telaMenuContatos(){
		apresentarMensagens();
		apresentarErros();
		limparCampos();
		ufs = UF.getListaUF();
		setMenuAtual(MENU_CONTATOS);
		return TELA_MENU_CONTATOS;
	}
	
	private void limparCampos() {
		this.dto = null;
	}

	public String pesquisar(){
		lista = getDestinatarioFacade().recuperarDestinatarios(dto);
		getRequest().setAttribute("destinatarios", lista);
		return telaMenuContatos();
	}
	
	public String criarMalaDireta(){
		return TELA_MALA_DIRETA;
	}
	
	public String excluir(){
		getDestinatarioFacade().excluir(destinatario);
		mensagens.put("mensagem", Mensagens.CONTATO_EXCLUIDO);
		return telaMenuContatos();
	}
	
	/**
	 * Salva ou Edita um contato
	 * @return
	 */
	public String salvarContato(){
		Cidade cidade = new Cidade(dto.getCidade(), dto.getUf());
		destinatario.setCidade(cidade);
		
		Set<Telefone> listaTelefone = new HashSet<Telefone>();
		
		if(Util.isPreenchido(dto.getTelefone())){
			Telefone telefone = new Telefone(dto.getDddTelefone(), dto.getTelefone(), false);
			listaTelefone.add(telefone);
		}
		if(Util.isPreenchido(dto.getCelular())){
			Telefone celular = new Telefone(dto.getDddCelular(), dto.getCelular(), true);
			listaTelefone.add(celular);
		}
		
		destinatario.setTelefones(listaTelefone);
		destinatario.setCliente(getUsuarioLogado().getCliente());
		
		getDestinatarioFacade().salvar(destinatario);
		mensagens.put("mensagem", Mensagens.CONTATO_SALVO);
		
		return telaMenuContatos();
	}
	
	
	public String telaSalvarContato(){
		tiposPessoa = TIPOPESSOA.getListaTipoPessoa();
		sexos = SEXO.getListaSexo();
		ufs = UF.getListaUF();
		
		if(destinatario != null && destinatario.getId() > 0){
			destinatario = getDestinatarioFacade().recuperarDestinatario(destinatario.getId());
			dto = new DestinatarioDTO();
			dto.setCidade(destinatario.getCidade().getNome());
			dto.setUf(destinatario.getCidade().getUf());
		}
		
		return TELA_SALVAR_CONTATO;
	}
	
	public String salvarMalaDireta(){
		
		return null;
	}
	
	public Destinatario getDestinatario() {
		return destinatario;
	}
	public void setDestinatario(Destinatario destinatario) {
		this.destinatario = destinatario;
	}
	public Set<Destinatario> getLista() {
		return lista;
	}
	public void setLista(Set<Destinatario> lista) {
		this.lista = lista;
	}

	public String getSelecionados() {
		return selecionados;
	}
	public void setSelecionados(String selecionados) {
		this.selecionados = selecionados;
	}

	public DestinatarioDTO getDto() {
		return dto;
	}

	public void setDto(DestinatarioDTO dto) {
		this.dto = dto;
	}

	public List<TIPOPESSOA> getTiposPessoa() {
		return tiposPessoa;
	}

	public void setTiposPessoa(List<TIPOPESSOA> tiposPessoa) {
		this.tiposPessoa = tiposPessoa;
	}

	public List<SEXO> getSexos() {
		return sexos;
	}

	public void setSexos(List<SEXO> sexos) {
		this.sexos = sexos;
	}

	public List<UF> getUfs() {
		return ufs;
	}

	public void setUfs(List<UF> ufs) {
		this.ufs = ufs;
	}
	
}
